home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / virtio_pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-10-16  |  2.2 KB  |  73 lines

  1. /*
  2.  * Virtio PCI driver
  3.  *
  4.  * This module allows virtio devices to be used over a virtual PCI device.
  5.  * This can be used with QEMU based VMMs like KVM or Xen.
  6.  *
  7.  * Copyright IBM Corp. 2007
  8.  *
  9.  * Authors:
  10.  *  Anthony Liguori  <aliguori@us.ibm.com>
  11.  *
  12.  * This header is BSD licensed so anyone can use the definitions to implement
  13.  * compatible drivers/servers.
  14.  */
  15.  
  16. #ifndef _LINUX_VIRTIO_PCI_H
  17. #define _LINUX_VIRTIO_PCI_H
  18.  
  19. #include <linux/virtio_config.h>
  20.  
  21. /* A 32-bit r/o bitmask of the features supported by the host */
  22. #define VIRTIO_PCI_HOST_FEATURES    0
  23.  
  24. /* A 32-bit r/w bitmask of features activated by the guest */
  25. #define VIRTIO_PCI_GUEST_FEATURES    4
  26.  
  27. /* A 32-bit r/w PFN for the currently selected queue */
  28. #define VIRTIO_PCI_QUEUE_PFN        8
  29.  
  30. /* A 16-bit r/o queue size for the currently selected queue */
  31. #define VIRTIO_PCI_QUEUE_NUM        12
  32.  
  33. /* A 16-bit r/w queue selector */
  34. #define VIRTIO_PCI_QUEUE_SEL        14
  35.  
  36. /* A 16-bit r/w queue notifier */
  37. #define VIRTIO_PCI_QUEUE_NOTIFY        16
  38.  
  39. /* An 8-bit device status register.  */
  40. #define VIRTIO_PCI_STATUS        18
  41.  
  42. /* An 8-bit r/o interrupt status register.  Reading the value will return the
  43.  * current contents of the ISR and will also clear it.  This is effectively
  44.  * a read-and-acknowledge. */
  45. #define VIRTIO_PCI_ISR            19
  46.  
  47. /* The bit of the ISR which indicates a device configuration change. */
  48. #define VIRTIO_PCI_ISR_CONFIG        0x2
  49.  
  50. /* MSI-X registers: only enabled if MSI-X is enabled. */
  51. /* A 16-bit vector for configuration changes. */
  52. #define VIRTIO_MSI_CONFIG_VECTOR        20
  53. /* A 16-bit vector for selected queue notifications. */
  54. #define VIRTIO_MSI_QUEUE_VECTOR         22
  55. /* Vector value used to disable MSI for queue */
  56. #define VIRTIO_MSI_NO_VECTOR            0xffff
  57.  
  58. /* The remaining space is defined by each driver as the per-driver
  59.  * configuration space */
  60. #define VIRTIO_PCI_CONFIG(dev)        ((dev)->msix_enabled ? 24 : 20)
  61.  
  62. /* Virtio ABI version, this must match exactly */
  63. #define VIRTIO_PCI_ABI_VERSION        0
  64.  
  65. /* How many bits to shift physical queue address written to QUEUE_PFN.
  66.  * 12 is historical, and due to x86 page size. */
  67. #define VIRTIO_PCI_QUEUE_ADDR_SHIFT    12
  68.  
  69. /* The alignment to use between consumer and producer parts of vring.
  70.  * x86 pagesize again. */
  71. #define VIRTIO_PCI_VRING_ALIGN        4096
  72. #endif
  73.